// JavaScript 弱类型产生的问题

// 必须等到运行阶段才能发现代码的类型异常
const obj = {}
//obj.foo()

// 若不是立即执行  等到代码执行才会发现代码类型异常
// 强类型语言则会在语法上报出错误  不会等到运行时 
// setTimeout(() => {
//     obj.foo()
// }, 1000000)

// =========================================

// 类型不明确造成函数功能有可能发生改变
// function sum (a, b) {
//     return a + b
// }

// console.log(sum(100, 100));
// console.log(sum(100, '100'));   // 返回字符串连接的结果

//===================================================

// 对象当中的属性会自动转换为字符串
// 对对象索引器的错误用法
const obj = {}

obj[true] = 100
console.log(obj['true']);


// 君子约定有隐患，强制要求有保障